package com.csair.irp.job.file.parser.base;

import com.csair.irp.job.file.exception.DataOperaterException;
import com.csair.irp.job.file.exception.FileParseException;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 数据转换、操作数据库接口
 *
 * @param <T> 数据对象类型
 */
public interface DataOperator<T> {

    /**
     * 解析某一行数据为数据对象，另外没有配置校验模版的还需要实现校验逻辑
     *
     * @param line 把行字符串转换为数据对象
     * @param fileId 数据文件信息ID
     * @param params 参数传递对象
     * @return 返回操作记录数
     * @throws DataOperaterException
     */
    T parseLineToData(String line, Serializable fileId, Map<Object, Object> params) throws FileParseException;


    /**
     * 批量入库方法
     *
     * @param datas  入库数据
     * @param fileId 数据文件ID
     * @return 返回操作记录数
     * @throws DataOperaterException
     */
    boolean insertData(List<T> datas, Serializable fileId) throws DataOperaterException;
}
